/********************************************
 * 功能说明: 生成模板工具类
 * 模块名称: 生成模块
 * 系统名称: java敏捷开发通用平台
 * 软件版权:
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2017年7月14日 下午3:16:52
 * 审核人员:
 * 相关文档:
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.database.mybatis.generator.template;

import com.hyacinth.config.Global;
import com.hyacinth.utils.file.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


/**
 * 生成模板工具类
 * @author zhangfb
 * @version 1.0.0.1
 */
public class Template {
	
	protected static Logger logger = LoggerFactory.getLogger(Template.class);
	
	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 ah:mm:ss");
	
	private String tempType;
	private String tempContent;
	private Map<String, String> params = new HashMap<String, String>();
	
	public static void main(String[] args) {
		Template template = new Template("IDict.java");
		System.out.println(template.dealContent());
	}
	
	public Template(String tempType) {
		this.tempType = tempType;
		initParams(); //设置公共参数
		readContent();//读取模板内容
	}
	
	/**
	 * 获取模板内容
	 * @return
	 */
	public File getFile() {
		
		return null;
	}
	
	/**
	 * 读取模板内容
	 * @return
	 */
	public void readContent() {
		String basePath = Template.class.getResource("").getFile();
		// 通过模板类型查找模板文件
		String filePath = basePath + tempType + ".txt";
		File file = new File(filePath);
		if (!file.exists()) {
			logger.info("查找文件模板失败！tempType=" + tempType);
			return;
		}
		// 读取模板内容
        try {
            tempContent = FileUtils.readFileToString(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
	
	/**
	 * 设置公共参数
	 */
	public void initParams() {
		params.put("${createTime}", sdf.format(new Date()));//创建时间
		params.put("${projectName}", Global.getConfig("product.name"));//项目名称
		params.put("${projectVender}", Global.getConfig("product.vender"));//项目供应商
	}
	
	/**
	 * 处理模板内容
	 * @return
	 */
	public String dealContent() {
		String fileContent = new String(tempContent);
		for (String key : params.keySet()) {
		    String value = params.get(key);
		    if (value == null) {
		    	continue;
		    }
		    logger.info(key + "--替换为：" + value);
		    fileContent = fileContent.replace(key, value);
		}
		return fileContent;
	}
	
	public void put(String key, String value) {
		params.put(key, value);
	}
	
	public String getContent() {
		return tempContent;
	}

}
